import turtle,math,time
#w表示画五角星，l_cirlce表示画圆，l_line表示画五角星周边闪烁的线
w=turtle.Turtle()
l_circle=turtle.Turtle()
l_line=turtle.Turtle()
turtle.bgcolor("black")
#定义一个颜色的集合列表
colors= ["#FF00FF", "#D8BFD8", "#0000FF", "#6495ED", "#FFD700", "#DAA520", "#FF4500"]

#把三个图形画笔的速度调快，同时隐藏三个图形的画笔
w.speed(10)
l_line.speed(10)
l_circle.speed(10)
l_line.ht()
l_circle.ht()
w.ht()

#定义一个画五角星的函数，L表示五角星的边长
def draw_wujiao(L):
    #设置五角星的边颜色、宽度、填充色等
    turtle.tracer(False)
    w.color("red","yellow")
    w.pensize(2)
    w.penup()
    w.goto(0,0)
    w.setheading(0)
    w.pendown()
    w.begin_fill()
    js = 0
    while js < 5:
        w.forward(L)
        w.right(144)
        js = js + 1
    w.end_fill()
    turtle.tracer(True)

#定义一个画线的函数，主要画五角星周围闪烁的线
def draw_line(L):
    #先定义一些画圆的画笔的基本参数
    l_circle.penup()
    l_circle.pensize(2)
    l_circle.goto(L/2,-0.9*L)#大概以五角星的中心为圆心找到画圆合适的起始位置
    l_circle.pendown()
    setangle=20#弧度，表示相邻两条闪烁线之间的弧度
    for i in range(200):#画200组
        for c in colors:#colors包含的所有颜色轮替画一次为一组
            turtle.tracer(False)
            # 在五角星的周边画一个圆,但是不显示圆
            l_circle.penup()
            l_circle.circle(0.75 * L, setangle)
            l_circle_dir = l_circle.heading()#获取当前圆画笔的朝向
            l_circle_pos = l_circle.pos()#获取当前圆画笔的位置
            #开始画闪烁的线
            l_line.penup()
            l_line.color(c)#每一种颜色轮替画一次
            l_line.pensize(3)
            l_line.goto(l_circle_pos)
            l_line.setheading(l_circle_dir-100)#使线的方向朝外，数字可以自定义合适即可
            l_line.pendown()
            l_line.forward(0.2 * L)#使闪烁线的长度和五角星的长度保持一定比例
            turtle.tracer(True)
            # time.sleep(0.05)若是觉得闪的快了可以调用此
#调用两个函数，需保持两个函数内的参数一致,且最好先调用画五角星的函数
draw_wujiao(200)
draw_line(200)
# 或者可以使用以下
# print("请输入五角星边长")
# L=int(input())
# draw_wujiao(L)
# draw_line(L)
turtle.done()